Symbols are objects whose usefulness rests on the fact that two
symbols are identical (in the sense of <#509#>eqv?<#509#>) if and only if their
names are spelled the same way. This is exactly the property needed to
represent identifiers
The rules for writing a symbol are exactly the same as the rules for
writing an identifier; see sections~#syntaxsection#511>
It is guaranteed that any symbol that has been returned as part of a literal expression, or read using the <#513#>read<#513#> procedure, and subsequently written out using the <#514#>write<#514#> procedure, will read back in as the identical symbol (in the sense of <#515#>eqv?<#515#>). The <#2063#>string<#516#><#516#>symbol<#2063#> procedure, however, can create symbols for which this write/read invariance may not hold because their names contain special characters or letters in the non-standard case.